home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / TWhiz.Frm < prev    next >
Text File  |  1997-06-14  |  26KB  |  825 lines

  1. VERSION 5.00
  2. Object = "{FE0065C0-1B7B-11CF-9D53-00AA003C9CB6}#1.0#0"; "comct232.ocx"
  3. Begin VB.Form FTestWhizzyStuff 
  4.    Caption         =   "Windows Interface Tricks"
  5.    ClientHeight    =   6495
  6.    ClientLeft      =   1110
  7.    ClientTop       =   1815
  8.    ClientWidth     =   8595
  9.    Icon            =   "TWhiz.frx":0000
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   6495
  12.    ScaleWidth      =   8595
  13.    Begin VB.TextBox txtSpecLoc 
  14.       BeginProperty Font 
  15.          Name            =   "Courier New"
  16.          Size            =   9.75
  17.          Charset         =   0
  18.          Weight          =   700
  19.          Underline       =   0   'False
  20.          Italic          =   0   'False
  21.          Strikethrough   =   0   'False
  22.       EndProperty
  23.       Height          =   375
  24.       Left            =   5850
  25.       TabIndex        =   27
  26.       Text            =   "0"
  27.       Top             =   156
  28.       Width           =   510
  29.    End
  30.    Begin VB.TextBox txtDst 
  31.       Height          =   330
  32.       Left            =   1995
  33.       TabIndex        =   7
  34.       Top             =   4080
  35.       Width           =   2115
  36.    End
  37.    Begin ComCtl2.UpDown udSysIcon 
  38.       Height          =   375
  39.       Left            =   6379
  40.       TabIndex        =   26
  41.       Top             =   2055
  42.       Width           =   192
  43.       _ExtentX        =   423
  44.       _ExtentY        =   661
  45.       _Version        =   327680
  46.       BuddyControl    =   "txtSysIcon"
  47.       BuddyDispid     =   196612
  48.       OrigLeft        =   5760
  49.       OrigTop         =   2047
  50.       OrigRight       =   6000
  51.       OrigBottom      =   2437
  52.       Max             =   100
  53.       SyncBuddy       =   -1  'True
  54.       Wrap            =   -1  'True
  55.       BuddyProperty   =   65547
  56.       Enabled         =   -1  'True
  57.    End
  58.    Begin VB.TextBox txtSysIcon 
  59.       BeginProperty Font 
  60.          Name            =   "Courier New"
  61.          Size            =   9.75
  62.          Charset         =   0
  63.          Weight          =   700
  64.          Underline       =   0   'False
  65.          Italic          =   0   'False
  66.          Strikethrough   =   0   'False
  67.       EndProperty
  68.       Height          =   375
  69.       Left            =   5850
  70.       TabIndex        =   22
  71.       Text            =   "0"
  72.       Top             =   2055
  73.       Width           =   510
  74.    End
  75.    Begin VB.CheckBox chkFileOnly 
  76.       Caption         =   "Files Only"
  77.       Height          =   225
  78.       Left            =   135
  79.       TabIndex        =   21
  80.       Top             =   4095
  81.       Width           =   1764
  82.    End
  83.    Begin VB.CheckBox chkMultiDest 
  84.       Caption         =   "Multiple Destinations"
  85.       Height          =   225
  86.       Left            =   135
  87.       TabIndex        =   20
  88.       Top             =   4410
  89.       Width           =   1764
  90.    End
  91.    Begin VB.CheckBox chkNoConfirm 
  92.       Caption         =   "No Confirm"
  93.       Height          =   225
  94.       Left            =   135
  95.       TabIndex        =   19
  96.       Top             =   4725
  97.       Width           =   1764
  98.    End
  99.    Begin VB.CheckBox chkMkDir 
  100.       Caption         =   "Make Directories"
  101.       Height          =   252
  102.       Left            =   135
  103.       TabIndex        =   18
  104.       Top             =   5028
  105.       Width           =   1764
  106.    End
  107.    Begin VB.CheckBox chkRename 
  108.       Caption         =   "Rename on Collision"
  109.       Height          =   225
  110.       Left            =   135
  111.       TabIndex        =   17
  112.       Top             =   5364
  113.       Width           =   1764
  114.    End
  115.    Begin VB.CheckBox chkSilent 
  116.       Caption         =   "No Progress"
  117.       Height          =   225
  118.       Left            =   135
  119.       TabIndex        =   16
  120.       Top             =   5685
  121.       Width           =   1764
  122.    End
  123.    Begin VB.CheckBox chkProgress 
  124.       Caption         =   "Simple Progress"
  125.       Height          =   225
  126.       Left            =   135
  127.       TabIndex        =   15
  128.       Top             =   6000
  129.       Width           =   1764
  130.    End
  131.    Begin VB.CheckBox chkUndo 
  132.       Caption         =   "Recycle Bin"
  133.       Height          =   225
  134.       Left            =   135
  135.       TabIndex        =   14
  136.       Top             =   3780
  137.       Width           =   1764
  138.    End
  139.    Begin VB.CommandButton cmdDocs 
  140.       Caption         =   "Add To Docs"
  141.       Height          =   435
  142.       Left            =   135
  143.       TabIndex        =   12
  144.       Top             =   2220
  145.       Width           =   1275
  146.    End
  147.    Begin VB.CommandButton cmdClearDoc 
  148.       Caption         =   "Clear Docs"
  149.       Height          =   435
  150.       Left            =   135
  151.       TabIndex        =   11
  152.       Top             =   2745
  153.       Width           =   1275
  154.    End
  155.    Begin VB.CommandButton cmdDst 
  156.       Caption         =   "..."
  157.       BeginProperty Font 
  158.          Name            =   "MS Sans Serif"
  159.          Size            =   8.25
  160.          Charset         =   0
  161.          Weight          =   700
  162.          Underline       =   0   'False
  163.          Italic          =   0   'False
  164.          Strikethrough   =   0   'False
  165.       EndProperty
  166.       Height          =   330
  167.       Left            =   4152
  168.       TabIndex        =   9
  169.       Top             =   4080
  170.       Width           =   435
  171.    End
  172.    Begin VB.CommandButton cmdSrc 
  173.       Caption         =   "..."
  174.       BeginProperty Font 
  175.          Name            =   "MS Sans Serif"
  176.          Size            =   8.25
  177.          Charset         =   0
  178.          Weight          =   700
  179.          Underline       =   0   'False
  180.          Italic          =   0   'False
  181.          Strikethrough   =   0   'False
  182.       EndProperty
  183.       Height          =   330
  184.       Left            =   4152
  185.       TabIndex        =   6
  186.       Top             =   1155
  187.       Width           =   435
  188.    End
  189.    Begin VB.TextBox txtSrc 
  190.       Height          =   330
  191.       Left            =   1995
  192.       TabIndex        =   4
  193.       Top             =   1155
  194.       Width           =   2115
  195.    End
  196.    Begin VB.CommandButton cmdRename 
  197.       Caption         =   "Rename"
  198.       Height          =   435
  199.       Left            =   135
  200.       TabIndex        =   3
  201.       Top             =   1695
  202.       Width           =   1275
  203.    End
  204.    Begin VB.CommandButton cmdDelete 
  205.       Caption         =   "Delete"
  206.       Height          =   435
  207.       Left            =   135
  208.       TabIndex        =   2
  209.       Top             =   1170
  210.       Width           =   1275
  211.    End
  212.    Begin VB.CommandButton cmdMove 
  213.       Caption         =   "Move"
  214.       Height          =   435
  215.       Left            =   135
  216.       TabIndex        =   1
  217.       Top             =   156
  218.       Width           =   1275
  219.    End
  220.    Begin VB.CommandButton cmdCopy 
  221.       Caption         =   "Copy"
  222.       Height          =   435
  223.       Left            =   135
  224.       TabIndex        =   0
  225.       Top             =   645
  226.       Width           =   1275
  227.    End
  228.    Begin ComCtl2.UpDown udSpecLoc 
  229.       Height          =   375
  230.       Left            =   6379
  231.       TabIndex        =   28
  232.       Top             =   156
  233.       Width           =   192
  234.       _ExtentX        =   423
  235.       _ExtentY        =   661
  236.       _Version        =   327680
  237.       BuddyControl    =   "txtSpecLoc"
  238.       BuddyDispid     =   196609
  239.       OrigLeft        =   5760
  240.       OrigTop         =   150
  241.       OrigRight       =   6000
  242.       OrigBottom      =   540
  243.       SyncBuddy       =   -1  'True
  244.       Wrap            =   -1  'True
  245.       BuddyProperty   =   65547
  246.       Enabled         =   -1  'True
  247.    End
  248.    Begin VB.Label lbl 
  249.       Caption         =   "Right-click almost anywhere to get a context menu"
  250.       BeginProperty Font 
  251.          Name            =   "MS Sans Serif"
  252.          Size            =   9.75
  253.          Charset         =   0
  254.          Weight          =   400
  255.          Underline       =   0   'False
  256.          Italic          =   0   'False
  257.          Strikethrough   =   0   'False
  258.       EndProperty
  259.       Height          =   636
  260.       Index           =   3
  261.       Left            =   5280
  262.       TabIndex        =   29
  263.       Top             =   3480
  264.       Width           =   2616
  265.    End
  266.    Begin VB.Label lbl 
  267.       Caption         =   "Destination:"
  268.       Height          =   330
  269.       Index           =   1
  270.       Left            =   1995
  271.       TabIndex        =   8
  272.       Top             =   3765
  273.       Width           =   1275
  274.    End
  275.    Begin VB.Label lblDst 
  276.       Height          =   1380
  277.       Left            =   1995
  278.       TabIndex        =   13
  279.       Top             =   4605
  280.       UseMnemonic     =   0   'False
  281.       Width           =   3795
  282.       WordWrap        =   -1  'True
  283.    End
  284.    Begin VB.Label lblSpecLoc 
  285.       Height          =   810
  286.       Left            =   5715
  287.       TabIndex        =   25
  288.       Top             =   825
  289.       UseMnemonic     =   0   'False
  290.       Width           =   2745
  291.       WordWrap        =   -1  'True
  292.    End
  293.    Begin VB.Label lbl 
  294.       Caption         =   "System Image Lists"
  295.       Height          =   288
  296.       Index           =   4
  297.       Left            =   6036
  298.       TabIndex        =   24
  299.       Top             =   2616
  300.       Width           =   2196
  301.    End
  302.    Begin VB.Image imgSSpecLoc 
  303.       Height          =   240
  304.       Left            =   7332
  305.       Top             =   156
  306.       Width           =   240
  307.    End
  308.    Begin VB.Image imgLSpecLoc 
  309.       Height          =   480
  310.       Left            =   6732
  311.       Top             =   156
  312.       Width           =   480
  313.    End
  314.    Begin VB.Label lbl 
  315.       Caption         =   "System Images"
  316.       Height          =   255
  317.       Index           =   2
  318.       Left            =   45
  319.       TabIndex        =   23
  320.       Top             =   -255
  321.       Width           =   2160
  322.    End
  323.    Begin VB.Image imgLSysIcon 
  324.       Height          =   480
  325.       Left            =   6732
  326.       Top             =   2055
  327.       Width           =   480
  328.    End
  329.    Begin VB.Image imgSSysIcon 
  330.       Height          =   240
  331.       Left            =   7332
  332.       Top             =   2055
  333.       Width           =   240
  334.    End
  335.    Begin VB.Image imgLDIcon 
  336.       Height          =   480
  337.       Left            =   1995
  338.       Stretch         =   -1  'True
  339.       Top             =   3240
  340.       Width           =   480
  341.    End
  342.    Begin VB.Image imgSDIcon 
  343.       Height          =   240
  344.       Left            =   2565
  345.       Top             =   3240
  346.       Width           =   240
  347.    End
  348.    Begin VB.Image imgSDIconSel 
  349.       Height          =   240
  350.       Left            =   3504
  351.       Top             =   3240
  352.       Width           =   240
  353.    End
  354.    Begin VB.Image imgLDIconSel 
  355.       Height          =   480
  356.       Left            =   2925
  357.       Top             =   3240
  358.       Width           =   480
  359.    End
  360.    Begin VB.Image imgSDIconOpen 
  361.       Height          =   240
  362.       Left            =   4455
  363.       Top             =   3240
  364.       Width           =   240
  365.    End
  366.    Begin VB.Image imgLDIconOpen 
  367.       Height          =   480
  368.       Left            =   3870
  369.       Top             =   3240
  370.       Width           =   480
  371.    End
  372.    Begin VB.Image imgLIconLink 
  373.       Height          =   480
  374.       Left            =   3870
  375.       Top             =   156
  376.       Width           =   480
  377.    End
  378.    Begin VB.Image imgSIconLink 
  379.       Height          =   240
  380.       Left            =   4455
  381.       Top             =   156
  382.       Width           =   240
  383.    End
  384.    Begin VB.Image imgLIconSel 
  385.       Height          =   480
  386.       Left            =   2925
  387.       Top             =   156
  388.       Width           =   480
  389.    End
  390.    Begin VB.Image imgSIconSel 
  391.       Height          =   240
  392.       Left            =   3504
  393.       Top             =   156
  394.       Width           =   240
  395.    End
  396.    Begin VB.Image imgSIcon 
  397.       Height          =   240
  398.       Left            =   2565
  399.       Top             =   156
  400.       Width           =   240
  401.    End
  402.    Begin VB.Image imgLIcon 
  403.       Height          =   480
  404.       Left            =   1995
  405.       Top             =   156
  406.       Width           =   480
  407.    End
  408.    Begin VB.Label lblSrc 
  409.       Height          =   1545
  410.       Left            =   1995
  411.       TabIndex        =   10
  412.       Top             =   1575
  413.       UseMnemonic     =   0   'False
  414.       Width           =   3795
  415.       WordWrap        =   -1  'True
  416.    End
  417.    Begin VB.Label lbl 
  418.       Caption         =   "Source File:"
  419.       Height          =   330
  420.       Index           =   0
  421.       Left            =   1995
  422.       TabIndex        =   5
  423.       Top             =   840
  424.       Width           =   1275
  425.    End
  426. End
  427. Attribute VB_Name = "FTestWhizzyStuff"
  428. Attribute VB_GlobalNameSpace = False
  429. Attribute VB_Creatable = False
  430. Attribute VB_PredeclaredId = True
  431. Attribute VB_Exposed = False
  432. Option Explicit
  433.  
  434. Private afOpFlags As Long
  435. Private hLSysImages As Long, cLSysImages As Long
  436. Private hSSysImages As Long, cSSysImages As Long
  437. Private fiFolder As New CFileInfo
  438. Attribute fiFolder.VB_VarHelpID = -1
  439. Private fiSrc As New CFileInfo, fiDst As New CFileInfo
  440. Private WithEvents ico As CTrayIcon
  441. Attribute ico.VB_VarHelpID = -1
  442. Private sTmpSrc As String
  443.  
  444. Private sExeName As String
  445.  
  446. Private Sub Form_Load()
  447.     
  448.     If Not HasShell Then
  449.         MsgBox "This program requires the enhanced Windows interface"
  450.         End
  451.     End If
  452.     If IsExe Then
  453.         sExeName = App.Path & sBSlash & App.EXEName & ".EXE"
  454.     Else
  455.         sExeName = App.Path & sBSlash & App.EXEName & ".VBP"
  456.     End If
  457.     
  458.     ' Create temporary file for initial source
  459.     sTmpSrc = Environ$("WINDIR") & "\Cathistan.bas"
  460.     SaveFileText sTmpSrc, "' The land of Basic"
  461.     txtSrc = sTmpSrc
  462.     NewSource
  463.     ' Set destination to temp directory
  464.     txtDst = GetTempDir
  465.     NewDestination
  466.     
  467.     ' Set up UpDown control for special folders
  468.     udSpecLoc.Min = CSIDL_DESKTOP
  469.     udSpecLoc.Max = CSIDL_NETHOOD
  470.     udSpecLoc = CSIDL_DRIVES
  471.     NewSpecialFolder -1
  472.     
  473.     ' Set up UpDown control for system images
  474.     hLSysImages = GetSysImageList(cLSysImages, True)
  475.     hSSysImages = GetSysImageList(cSSysImages, False)
  476.     udSysIcon.Min = 0
  477.     udSysIcon.Max = cLSysImages - 1
  478.     udSysIcon = 0
  479.     DrawSysIcons udSysIcon
  480.     
  481.     ' Set up tray icon
  482.     Set ico = New CTrayIcon
  483.     ico.Create Me.hWnd, imgSSpecLoc.Picture, "What the heck"
  484.                    
  485. End Sub
  486.  
  487. Private Sub Form_Unload(Cancel As Integer)
  488.     BugMessage "Unloading"
  489.     Set ico = Nothing
  490.     If ExistFileDir(sTmpSrc) Then Kill sTmpSrc
  491. End Sub
  492.  
  493. Private Sub Form_Terminate()
  494.     BugMessage "Terminating"
  495. End Sub
  496.  
  497. ' Handle source and destination
  498.  
  499. Private Sub cmdSrc_Click()
  500.     Dim sFile As String, f As Boolean
  501.     Static sDir As String
  502.     If sDir = sEmpty Then sDir = CurDir$
  503.     
  504.     f = VBGetOpenFileName(filename:=sFile, _
  505.                           InitDir:=sDir, _
  506.                           flags:=OFN_FileMustExist Or OFN_HideReadOnly, _
  507.                           Filter:="All files | *.*")
  508.     If f And sFile <> sEmpty Then txtSrc.Text = sFile
  509.     sDir = GetFileDir(sFile)
  510.     NewSource
  511. End Sub
  512.  
  513. Private Sub txtSrc_LostFocus()
  514.     NewSource
  515. End Sub
  516.  
  517. Private Sub NewSource()
  518. With fiSrc
  519.     Dim s As String, sOld As String
  520.     On Error GoTo FailNewSource
  521.     sOld = fiSrc
  522.     ' Assign a file name to a file information object
  523.     fiSrc = txtSrc.Text
  524.     ' Get back all the information about the file
  525.     s = s & "Display name: " & .DisplayName & sCrLf
  526.     s = s & "Type name: " & .TypeName & sCrLf
  527.     s = s & "Length: " & .Length & " bytes" & sCrLf
  528.     s = s & "Created: " & .Created & sCrLf
  529.     s = s & "Last modified: " & .Modified & sCrLf
  530.     s = s & "Last accessed: " & .Accessed & sCrLf
  531.     lblSrc.Caption = s
  532.     Set imgLIcon.Picture = .ShellIcon()
  533.     Set imgSIcon.Picture = .SmallIcon()
  534.     Set imgLIconSel.Picture = .ShellIcon(SHGFI_SELECTED)
  535.     Set imgSIconSel.Picture = .SmallIcon(SHGFI_SELECTED)
  536.     Set imgLIconLink.Picture = .ShellIcon(SHGFI_LINKOVERLAY)
  537.     Set imgSIconLink.Picture = .SmallIcon(SHGFI_LINKOVERLAY)
  538.     Exit Sub
  539. FailNewSource:
  540.     txtSrc = sOld
  541.     fiSrc = sOld
  542.     MsgBox "Can't set new source"
  543. End With
  544. End Sub
  545.  
  546. Private Sub cmdDst_Click()
  547.     Dim sDisplay As String, sResult As String
  548.     sResult = BrowseForFolder(Owner:=hWnd, DisplayName:=sDisplay, _
  549.                               Options:=BIF_BROWSEINCLUDEFILES)
  550.     If sResult <> sEmpty Then txtDst = sResult
  551.     NewDestination
  552. End Sub
  553.  
  554. Private Sub txtDst_LostFocus()
  555.     NewDestination
  556. End Sub
  557.  
  558. Private Sub NewDestination()
  559. With fiDst
  560.     Dim s As String, sOld As String
  561.     On Error GoTo FailNewDestination
  562.     sOld = fiDst
  563.     fiDst = txtDst.Text
  564.     s = s & "Display name: " & .DisplayName & sCrLf
  565.     s = s & "Type name: " & .TypeName & sCrLf
  566.     ' Creation and last accessed times invalid for directories
  567.     s = s & "Last modified: " & .Modified & sCrLf
  568.     lblDst.Caption = s
  569.     Set imgLDIcon.Picture = .ShellIcon()
  570.     Set imgSDIcon.Picture = .SmallIcon()
  571.     Set imgLDIconSel.Picture = .ShellIcon(SHGFI_SELECTED)
  572.     Set imgSDIconSel.Picture = .SmallIcon(SHGFI_SELECTED)
  573.     Set imgLDIconOpen.Picture = .ShellIcon(SHGFI_OPENICON)
  574.     Set imgSDIconOpen.Picture = .SmallIcon(SHGFI_OPENICON)
  575.     Exit Sub
  576. FailNewDestination:
  577.     txtDst = sOld
  578.     fiDst = sOld
  579.     MsgBox "Can't set new destination"
  580. End With
  581. End Sub
  582.  
  583. ' Handle command buttons
  584.  
  585. Private Sub cmdMove_Click()
  586.     SetOpFlags
  587.     MoveAnyFile txtSrc.Text, txtDst.Text, afOpFlags
  588.     txtSrc.Text = txtDst.Text & GetFileBaseExt(txtSrc.Text)
  589. End Sub
  590.  
  591. Private Sub cmdCopy_Click()
  592.     SetOpFlags
  593.     CopyAnyFile txtSrc, txtDst, afOpFlags
  594. End Sub
  595.  
  596. Private Sub cmdDelete_Click()
  597.     SetOpFlags
  598.     DeleteAnyFile txtSrc.Text, afOpFlags
  599.     txtSrc.Text = sEmpty
  600. End Sub
  601.  
  602. Private Sub cmdRename_Click()
  603.     Dim s As String
  604.     s = InputBox("New name for " & txtSrc.Text)
  605.     SetOpFlags
  606.     RenameAnyFile txtSrc.Text, s, afOpFlags
  607. End Sub
  608.  
  609. Private Sub SetOpFlags()
  610.     afOpFlags = 0
  611.     If chkMultiDest.Value = vbChecked Then
  612.         afOpFlags = afOpFlags Or FOF_MULTIDESTFILES
  613.     End If
  614.     If chkSilent.Value = vbChecked Then
  615.         afOpFlags = afOpFlags Or FOF_SILENT
  616.     End If
  617.     If chkRename.Value = vbChecked Then
  618.         afOpFlags = afOpFlags Or FOF_RENAMEONCOLLISION
  619.     End If
  620.     If chkNoConfirm.Value = vbChecked Then
  621.         afOpFlags = afOpFlags Or FOF_NOCONFIRMATION
  622.     End If
  623.     If chkUndo.Value = vbChecked Then
  624.         afOpFlags = afOpFlags Or FOF_ALLOWUNDO
  625.     End If
  626.     If chkFileOnly.Value = vbChecked Then
  627.         afOpFlags = afOpFlags Or FOF_FILESONLY
  628.     End If
  629.     If chkProgress.Value = vbChecked Then
  630.         afOpFlags = afOpFlags Or FOF_SIMPLEPROGRESS
  631.     End If
  632.     If chkMkDir.Value = vbChecked Then
  633.         afOpFlags = afOpFlags Or FOF_NOCONFIRMMKDIR
  634.     End If
  635.     
  636. End Sub
  637.  
  638. Private Sub cmdDocs_Click()
  639.     AddToRecentDocs txtSrc.Text
  640. End Sub
  641.  
  642. Private Sub cmdClearDoc_Click()
  643.     ClearRecentDocs
  644. End Sub
  645.  
  646. ' Handle special folder locations
  647.  
  648. Private Sub udSpecLoc_UpClick()
  649.     ' Increment on every UpClick
  650.     NewSpecialFolder 1
  651. End Sub
  652.  
  653. Private Sub udSpecLoc_DownClick()
  654.     ' Decrement on every DownClick
  655.     NewSpecialFolder -1
  656. End Sub
  657.  
  658. Private Sub NewSpecialFolder(ByVal iInc As Long)
  659.     Do
  660.         On Error Resume Next
  661.         fiFolder = udSpecLoc                ' Folder to CFileInfo object
  662.         If Err = 0 Then Exit Do
  663.         udSpecLoc.Value = udSpecLoc + iInc  ' Skip missing numbers
  664.         ' Wrap property doesn't work on assignment
  665.         If udSpecLoc = udSpecLoc.Min Then udSpecLoc = udSpecLoc.Max
  666.         If udSpecLoc = udSpecLoc.Max Then udSpecLoc = udSpecLoc.Min
  667.     Loop
  668.     lblSpecLoc.Caption = "Special folder: " & fiFolder.DisplayName
  669.     imgLSpecLoc = fiFolder.ShellIcon
  670.     imgSSpecLoc = fiFolder.SmallIcon
  671. End Sub
  672.  
  673. ' Handle system icons
  674. Private Sub udSysIcon_UpClick()
  675.     DrawSysIcons udSysIcon
  676. End Sub
  677.  
  678. Private Sub udSysIcon_DownClick()
  679.     DrawSysIcons udSysIcon
  680. End Sub
  681.  
  682. Private Sub DrawSysIcons(i As Integer)
  683.     imgLSysIcon.Picture = GetSysIcon(hLSysImages, i)
  684.     imgSSysIcon.Picture = GetSysIcon(hSSysImages, i)
  685. End Sub
  686.  
  687. ' Handle tray icon messages
  688.  
  689. Private Sub ico_TrayMessage(ByVal Message As Long, ByVal ID As Long)
  690.     ' Handle left double click or right click
  691.     Select Case Message
  692.     Case WM_LBUTTONDBLCLK
  693.         MsgBox "You double-clicked me"
  694.     Case WM_RBUTTONUP
  695.         MsgBox "You right clicked me"
  696.     End Select
  697. End Sub
  698.  
  699. ' Right click for context menus
  700.  
  701. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  702.     If Button And 2 Then ContextPopMenu hWnd, sExeName, x, y
  703. End Sub
  704.  
  705. Private Sub cmdDst_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  706.     If Button And 2 Then ContextPopMenu cmdDst.hWnd, CStr(fiDst), x, y
  707. End Sub
  708.  
  709. Private Sub imgLDIcon_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  710. With imgLDIcon
  711.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  712. End With
  713. End Sub
  714.  
  715. Private Sub imgLDIconOpen_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  716. With imgLDIconOpen
  717.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  718. End With
  719. End Sub
  720.  
  721. Private Sub imgLDIconSel_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  722. With imgLDIconSel
  723.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  724. End With
  725. End Sub
  726.  
  727. Private Sub imgLIcon_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  728. With imgLIcon
  729.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  730. End With
  731. End Sub
  732. Private Sub imgLIconLink_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  733. With imgLIconLink
  734.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  735. End With
  736. End Sub
  737.  
  738. Private Sub imgLIconSel_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  739. With imgLIconSel
  740.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  741. End With
  742. End Sub
  743.  
  744. Private Sub imgLSpecLoc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  745. With imgLSpecLoc
  746.     If Button And 2 Then ContextPopMenu hWnd, fiFolder, x + .Left, y + .Top
  747. End With
  748. End Sub
  749.  
  750. Private Sub imgSDIcon_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  751. With imgSDIcon
  752.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  753. End With
  754. End Sub
  755.  
  756. Private Sub imgSDIconOpen_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  757. With imgSDIconOpen
  758.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  759. End With
  760. End Sub
  761.  
  762. Private Sub imgSDIconSel_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  763. With imgSDIconSel
  764.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  765. End With
  766. End Sub
  767.  
  768. Private Sub imgSIcon_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  769. With imgSIcon
  770.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  771. End With
  772. End Sub
  773.  
  774. Private Sub imgSIconLink_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  775. With imgSIconLink
  776.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  777. End With
  778. End Sub
  779.  
  780. Private Sub imgSIconSel_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  781. With imgSIconSel
  782.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  783. End With
  784. End Sub
  785.  
  786. Private Sub imgSSpecLoc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  787. With imgSSpecLoc
  788.     If Button And 2 Then ContextPopMenu hWnd, fiFolder, x + .Left, y + .Top
  789. End With
  790. End Sub
  791.  
  792. Private Sub txtSpecLoc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  793.     If Button And 2 Then ContextPopMenu txtSpecLoc.hWnd, fiFolder, x, y
  794. End Sub
  795.  
  796. Private Sub udSpecLoc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  797.     If Button And 2 Then ContextPopMenu udSpecLoc.hWnd, fiFolder, x, y
  798. End Sub
  799.  
  800. Private Sub lblDst_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  801. With lblDst
  802.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiDst), x + .Left, y + .Top
  803. End With
  804. End Sub
  805.  
  806. Private Sub lblSrc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  807. With lblSrc
  808.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x + .Left, y + .Top
  809. End With
  810.     If Button And 2 Then ContextPopMenu hWnd, CStr(fiSrc), x, y
  811. End Sub
  812.  
  813. Private Sub txtDst_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  814.     If Button And 2 Then ContextPopMenu txtDst.hWnd, CStr(fiDst), x, y
  815. End Sub
  816.  
  817. Private Sub cmdSrc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  818.     If Button And 2 Then ContextPopMenu cmdSrc.hWnd, fiSrc, x, y
  819. End Sub
  820.  
  821. Private Sub txtSrc_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  822.     If Button And 2 Then ContextPopMenu txtSrc.hWnd, CStr(fiSrc), x, y
  823. End Sub
  824.  
  825.